In serverless networks, such as in peer-to-peer systems, there is a need to assign unique identifiers to all network nodes in the system. The majority of serverless systems are based on a usage of distributed hash-tables (DHTs) to assign and track unique identifiers. Usage of DHTs toughens the requirements in serverless networks for node identifiers, because the identifiers should not only be unique, but also evenly (uniformly) distributed on all numerical axes or in n-dimensional space.
If node identifiers are not uniformly distributed on a numerical axis or in n-dimensional space, then some hashing functions in general will cease to work, others will lose their characteristics, and workload on individual network nodes may increase substantially, to the point of failure. At least part of the reason for such difficulties with non-uniform allocation of identifiers, is that memory requirements and/or throughput at one or more individual nodes may become unacceptably large, and/or network search time may suffer.
Substantially uniform allocation of identifiers is therefore a critical condition for effective operation of all distributed hashing functions known at present to be used in assigning and tracking network node identifiers. The advantages, known to the skilled artisan, of the use of distributed hash-tables in conjunction with other methods, for construction of peer-to-peer networks are only attained when the node identifiers are allocated substantially uniformly.
When dealing with a distributed serverless network system having a relatively large number of independent nodes, such as thousands or even millions of independent nodes, for the practical assignment of node identifiers classical cryptographic hashing functions such as MD5 or SHA-1 (known to the skilled artisan) working simultaneously may be used. With the help of such hashing functions it is possible, for example, to convert a combination of the user name, the MAC-address of a network card, the IP-address of a node or other data, which is unique for each site on the network, and to create thereby a numerical identifier for the node. With a high probability (O(½^n) where “n” is a number of sites in a network), these identifiers will evenly fill themselves in a numerical axis such that the length of the biggest interval between identifiers will not differ greatly from the length of the smallest.
If, on the other hand, the number of nodes in a serverless network is relatively small, tens or even hundreds for example, then the probability of non-uniform identifier allocation is unacceptably large for construction of a reliable system.
For construction of relatively small peer-to-peer networks, such as, for example, networks intended for use within a corporate structure or for a cluster system, it is necessary to develop an allocation system for node identifiers that will guarantee both uniqueness and substantially uniform distribution across all numerical axes without dependence on the number of nodes which have entered the network.
Such a system for node identifier allocation should be resistant against failures (fault resistant). If certain arbitrarily-selected network nodes fail, the failures should not create bottlenecks. Further, introduction of any quantity of new nodes into a network, including the introduction of several nodes simultaneously, should not create excessive load on any network node. That is, load balancing should be an inherent feature of such a system. Thus it should be possible to connect nodes in parallel to a network (many nodes simultaneously), instead of strictly sequentially.
A system with the desirable features described above has uses beyond node identifier assignment in peer-to-peer networks. Such a system and method may be used, for example, for uniform allocation of any identifiers and numerical values in a distributed system. It can be identifiers of special nodes of the defined kind, resource identifiers placed on network nodes, or any other identifiers and numerical values, which should be evenly distributed on a numerical axis.